/*****************************************************************************/
/**
 *  @file   Argument.h
 *  @author Naohisa Sakamoto
 */
/*----------------------------------------------------------------------------
 *
 *  Copyright (c) Visualization Laboratory, Kyoto University.
 *  All rights reserved.
 *  See http://www.viz.media.kyoto-u.ac.jp/kvs/copyright/ for details.
 *
 *  $Id$
 */
/*****************************************************************************/
#pragma once
#include <string>
#include <iostream>
#include <kvs/CommandLine>
#include <kvs/SharedPointer>
#include <kvs/Indent>


class Argument
{
private:

    typedef kvs::SharedPointer<kvs::CommandLine> Command;
    Command m_command;

public:

    Argument( int argc, char** argv );

    bool parse();
    bool hasByteOption() const;
    bool hasVerboseOption() const;
    size_t numberOfDivisions() const;
    std::string output() const;
    std::string input() const;
    void print( std::ostream& os, const kvs::Indent& indent = kvs::Indent(0) ) const;
};
